package ar.com.sne.bean;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;


/**
 * Esta es de la que debieran heredar todos los BO
 * 
 * @author ggiro
 * 
 */

@MappedSuperclass
public abstract class BaseBO implements BaseBean {

	private static final long serialVersionUID = 1L;

	private Long id;
	private String usuario;
	private String activado;
	private Date fechaMod;
	
   	/**
	 * @return the id
	 */
    
	@Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
	@Column(name = "id", unique = true, nullable = false)
	public Long getId() {
		return id;
	}

	/**
	 * @param id the id to set
	 */
	public void setId(long id) {
		this.id = id;
	}
	
	public void setId(Long id) {
		this.id = id;
	}

	@Column(name = "usuario", nullable = true, length = 45)
	public String getUsuario() {
		return this.usuario;
	}

	public void setUsuario(String usuario) {
		this.usuario = usuario;
	}

	@Column(name = "activado", nullable = false, length = 45)
	public String getActivado() {
		return this.activado;
	}

	public void setActivado(String activado) {
		this.activado = activado;
	}

	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "fecha_mod", nullable = false, length = 0)
	public Date getFechaMod() {
		return this.fechaMod;
	}

	public void setFechaMod(Date fechaMod) {
		this.fechaMod = fechaMod;
	}

	@Transient
	private Log log = LogFactory.getLog(BaseBean.class);

	/*
	 * Atribitos utlilizados para los objetos con vigencia, que son aquellos
	 * validados en un rango de fechas.
	 */
	@Override
	public String toString() {

		StringBuilder sb = new StringBuilder();
		sb.append(this.getClass());
		sb.append(" ID:");
		sb.append(id);
		return sb.toString();
	}
}
